﻿using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using BussinessLogicTecnoPez.Tipos_Comunes;
using Tecnopez.Globals;
using BussinessLogicTecnoPez;

public partial class Modules_Tipos_ABMFormaDePago : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        GenericMasterPage master = (GenericMasterPage)this.Master;
        master.Imagen = "../Styles/Icons/ic_mis_cuentas.gif";
        master.Titulo = "Gestión de formas de pago.";

        cmdEliminar.OnClientClick = "return confirm('Esta seguro de eliminar el registro?');";

        grdPrincipal.setupGrid(typeof(FormaDePago), cargarGrilla, false, true, ViewState);

        if (!IsPostBack)
        {
            this.SetMode(PageMode.ListMode);
        }

    }

    private void cargarGrilla()
    {
        if (ViewState[grdPrincipal.PageDataViewOrderKey] == null)
        {
            FormaDePago.getManager.AddOrder("descripcion",
                GenericManager<FormaDePago>.Order.orderDirection.DESC);
        }
        else
        {
            FormaDePago.getManager.AddOrder(ViewState[grdPrincipal.PageDataViewOrderKey].ToString(),
                (GenericManager<FormaDePago>.Order.orderDirection)ViewState[grdPrincipal.PageDataViewOrdenDireccionKey]);
        }

        FormaDePago.getManager.AddFilter("descripcion", GenericManager<FormaDePago>.filterOperator.Like, txtBuscarNombre.Text + "%");
        FormaDePago.getManager.AddFilter("baja", GenericManager<FormaDePago>.filterOperator.Equals, null);

        grdPrincipal.DataSource = FormaDePago.getManager.GetFilter();
        grdPrincipal.DataBind();
    }


    private PageMode getMode()
    {
        if (ViewState["PageMode"] == null)
            return PageMode.ModeNotFound;
        return (PageMode)ViewState["PageMode"];
    }

    private void SetMode(PageMode mode)
    {
        ViewState["PageMode"] = mode;
        switch (mode)
        {
            case PageMode.ListMode:
                multiPrincipal.ActiveViewIndex = 0;
                break;
            case PageMode.NewMode:
                multiPrincipal.ActiveViewIndex = 1;
                txtNombre.Text = "";
                Functions.setearReadOnly(false, txtNombre);


                cmdAceptar.Visible = true;
                cmdCancelar.Enabled = true;
                cmdEditar.Enabled = false;
                cmdEliminar.Enabled = false;

                break;
            case PageMode.EditMode:
                multiPrincipal.ActiveViewIndex = 1;

                Functions.setearReadOnly(false, txtNombre);


                cmdAceptar.Visible = true;
                cmdCancelar.Enabled = true;
                cmdEditar.Enabled = false;
                cmdEliminar.Enabled = false;
                break;
            case PageMode.ViewMode:
                multiPrincipal.ActiveViewIndex = 1;

                Functions.setearReadOnly(true, txtNombre);

                cmdAceptar.Visible = false;
                cmdCancelar.Enabled = true;
                cmdEditar.Enabled = true;
                cmdEliminar.Enabled = true;
                break;
        }

    }

    protected void cmdBuscar_Click(object sender, EventArgs e)
    {

    }
    protected void cmdNuevo_Click(object sender, EventArgs e)
    {
        this.SetMode(PageMode.NewMode);
    }
    protected void cmdEditar_Click(object sender, EventArgs e)
    {
        this.SetMode(PageMode.EditMode);
    }
    protected void cmdEliminar_Click(object sender, EventArgs e)
    {
        Int32 idFormadePago = Convert.ToInt32(txtCodigo.Text);
        FormaDePago objFormaDePago = FormaDePago.getManager.GetOneByPrimaryKey(idFormadePago);
        if (objFormaDePago != null)
        {
            objFormaDePago.Baja = "S";
            if (FormaDePago.getManager.Update(objFormaDePago))
            {
                Functions.MessageBox("La forma de pago fue dada baja con éxito.", this);
                this.SetMode(PageMode.ListMode);
                cargarGrilla();
            }
            else
            {
                Functions.MessageBox("No se pudo dar de baja la forma de pago.", this);
            }
        }
        else
        {
            Functions.MessageBox("La forma de pago seleccionada no puede ser editada.", this);
        }
    }
    protected void cmdAceptar_Click(object sender, EventArgs e)
    {
        if (IsValid)
        {
            if (this.getMode() == PageMode.NewMode)
            {
                FormaDePago objForma = new FormaDePago();
                objForma.Descripcion = txtNombre.Text;
                if (FormaDePago.getManager.Insert(objForma))
                {
                    Functions.MessageBox("La forma de pago fue dada de alta.", this);
                    this.SetMode(PageMode.ListMode);
                    cargarGrilla();
                }
                else
                {
                    Functions.MessageBox("Error al registrar la forma de pago", this);
                }
            }
            else if (this.getMode() == PageMode.EditMode)
            {
                Int32 idFormadePago = Convert.ToInt32(txtCodigo.Text);
                FormaDePago objFormaDePago = FormaDePago.getManager.GetOneByPrimaryKey(idFormadePago);
                if (objFormaDePago != null)
                {
                    objFormaDePago.Descripcion = txtNombre.Text;
                    if (FormaDePago.getManager.Update(objFormaDePago))
                    {
                        Functions.MessageBox("La forma de pago se edito con éxito.", this);
                        this.SetMode(PageMode.ListMode);
                        cargarGrilla();
                    }
                    else
                    {
                        Functions.MessageBox("No se pudo editar la forma de pago.", this);
                    }
                }
                else
                {
                    Functions.MessageBox("La forma de pago seleccionada no puede ser editada.", this);
                }
            }
            else
            {
                Functions.MessageBox("El modo del formulario actual no es el correcto", this);
            }
        }
    }
    protected void cmdCancelar_Click(object sender, EventArgs e)
    {
        this.SetMode(PageMode.ListMode);
    }
    protected void grdPrincipal_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        if (grdPrincipal.Rows[0].Cells[0].Text == "&nbsp;")
        {
            Functions.MessageBox("No hay elementos en la grilla.", this);
            return;
        }
        if (e.CommandName == "ver")
        {

            int idFormaPago = int.Parse(grdPrincipal.DataKeys[System.Convert.ToInt32(e.CommandArgument)].Value.ToString());
            FormaDePago objFormaDePago = FormaDePago.getManager.GetOneByPrimaryKey(idFormaPago);
            if (objFormaDePago != null)
            {
                txtCodigo.Text = objFormaDePago.IdFormaDePago.ToString();
                txtNombre.Text = objFormaDePago.Descripcion;
                SetMode(PageMode.ViewMode);
            }
            else
            {
                Functions.MessageBox("No se puede mostrar el item.", this);
            }
        }
    }
}
